// pages/category/category.js
Page({
  data: {
    searchKeyword: '',
    selectedCategory: 'all',
    categories: [
      { id: 'all', name: '全部', icon: '📚' },
      { id: 'smartphone', name: '智能手机', icon: '📱' },
      { id: 'laptop', name: '笔记本电脑', icon: '💻' },
      { id: 'tablet', name: '平板电脑', icon: '📟' },
      { id: 'audio', name: '音频设备', icon: '🎧' },
      { id: 'smart', name: '智能设备', icon: '🏠' },
      { id: 'accessories', name: '配件', icon: '🔌' }
    ],
    manuals: [
      {
        id: 1,
        title: 'Magic 6 Pro 使用手册',
        category: 'smartphone',
        version: 'v2.1',
        size: '12.5MB',
        pages: 156,
        downloadCount: 12580,
        lastUpdate: '2024-01-15',
        description: '荣耀Magic 6 Pro完整使用指南，包含功能介绍、操作技巧、故障排除等',
        tags: ['旗舰', '摄影', 'AI'],
        thumbnail: '📱'
      },
      {
        id: 2,
        title: 'MagicBook X 14 安装指南',
        category: 'laptop',
        version: 'v1.8',
        size: '8.2MB',
        pages: 89,
        downloadCount: 8930,
        lastUpdate: '2024-01-10',
        description: 'MagicBook X 14笔记本电脑开箱、安装、首次使用完整流程',
        tags: ['轻薄', '办公', '性能'],
        thumbnail: '💻'
      },
      {
        id: 3,
        title: 'MagicPad 13 快速上手',
        category: 'tablet',
        version: 'v1.5',
        size: '6.8MB',
        pages: 67,
        downloadCount: 5670,
        lastUpdate: '2024-01-08',
        description: 'MagicPad 13平板电脑快速入门指南，让您快速掌握核心功能',
        tags: ['大屏', '创作', '娱乐'],
        thumbnail: '📟'
      },
      {
        id: 4,
        title: 'Earbuds X5 配对教程',
        category: 'audio',
        version: 'v1.2',
        size: '3.5MB',
        pages: 34,
        downloadCount: 15200,
        lastUpdate: '2024-01-05',
        description: 'Earbuds X5真无线耳机配对、使用、维护完整教程',
        tags: ['无线', '降噪', '音质'],
        thumbnail: '🎧'
      },
      {
        id: 5,
        title: '智能手表 GT4 功能详解',
        category: 'smart',
        version: 'v2.0',
        size: '9.1MB',
        pages: 112,
        downloadCount: 7890,
        lastUpdate: '2024-01-12',
        description: '智能手表GT4所有功能详细说明，健康监测、运动模式、智能提醒等',
        tags: ['健康', '运动', '智能'],
        thumbnail: '⌚'
      },
      {
        id: 6,
        title: 'Magic Charger 使用说明',
        category: 'accessories',
        version: 'v1.0',
        size: '2.1MB',
        pages: 23,
        downloadCount: 4560,
        lastUpdate: '2024-01-03',
        description: 'Magic无线充电器使用说明，支持多种设备快速充电',
        tags: ['无线充电', '快充', '兼容'],
        thumbnail: '🔌'
      }
    ],
    filteredManuals: [],
    sortBy: 'download', // download, update, name
    isLoading: false
  },

  onLoad(options) {
    // 如果URL中有搜索参数，设置搜索关键词
    if (options.search) {
      this.setData({
        searchKeyword: decodeURIComponent(options.search)
      })
    }
    this.filterManuals()
  },

  onShow() {
    // 页面显示时刷新数据
    this.filterManuals()
  },

  // 搜索输入处理
  onSearchInput(e) {
    this.setData({
      searchKeyword: e.detail.value
    })
    this.filterManuals()
  },

  // 搜索确认
  onSearchConfirm() {
    this.filterManuals()
  },

  // 分类选择
  selectCategory(e) {
    const categoryId = e.currentTarget.dataset.category
    this.setData({
      selectedCategory: categoryId
    })
    this.filterManuals()
  },

  // 排序方式选择
  selectSort(e) {
    const sortBy = e.currentTarget.dataset.sort
    this.setData({
      sortBy: sortBy
    })
    this.sortManuals()
  },

  // 过滤手册
  filterManuals() {
    const { searchKeyword, selectedCategory, manuals } = this.data
    let filtered = [...manuals]

    // 按分类过滤
    if (selectedCategory !== 'all') {
      filtered = filtered.filter(manual => manual.category === selectedCategory)
    }

    // 按关键词搜索
    if (searchKeyword.trim()) {
      const keyword = searchKeyword.toLowerCase()
      filtered = filtered.filter(manual => 
        manual.title.toLowerCase().includes(keyword) ||
        manual.description.toLowerCase().includes(keyword) ||
        manual.tags.some(tag => tag.toLowerCase().includes(keyword))
      )
    }

    this.setData({
      filteredManuals: filtered
    })
    this.sortManuals()
  },

  // 排序手册
  sortManuals() {
    const { sortBy, filteredManuals } = this.data
    let sorted = [...filteredManuals]

    switch (sortBy) {
      case 'download':
        sorted.sort((a, b) => b.downloadCount - a.downloadCount)
        break
      case 'update':
        sorted.sort((a, b) => new Date(b.lastUpdate) - new Date(a.lastUpdate))
        break
      case 'name':
        sorted.sort((a, b) => a.title.localeCompare(b.title))
        break
    }

    this.setData({
      filteredManuals: sorted
    })
  },

  // 查看手册详情
  viewManual(e) {
    const manualId = e.currentTarget.dataset.id
    const manual = this.data.manuals.find(m => m.id === manualId)
    
    if (manual) {
      wx.showModal({
        title: manual.title,
        content: `版本：${manual.version}\n大小：${manual.size}\n页数：${manual.pages}\n下载量：${manual.downloadCount}\n\n${manual.description}`,
        confirmText: '下载',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            this.downloadManualFile(manual)
          }
        }
      })
    }
  },

  // 下载手册文件（内部方法）
  downloadManualFile(manual) {
    wx.showLoading({
      title: '准备下载...'
    })

    // 模拟下载过程
    setTimeout(() => {
      wx.hideLoading()
      wx.showToast({
        title: '下载成功',
        icon: 'success'
      })
      
      // 更新下载次数
      const manuals = this.data.manuals.map(m => {
        if (m.id === manual.id) {
          return { ...m, downloadCount: m.downloadCount + 1 }
        }
        return m
      })
      
      this.setData({ manuals })
      this.filterManuals()
    }, 1500)
  },

  // 阻止事件冒泡
  stopPropagation(e) {
    // 空方法，仅用于阻止事件冒泡
  },

  // 收藏手册（添加到我的产品）
  favoriteManual(e) {
    // 防止事件冒泡
    if (e && e.stopPropagation) {
      e.stopPropagation()
    }
    
    // 防止事件冒泡到父元素
    if (e && e.preventDefault) {
      e.preventDefault()
    }
    
    const manualId = e.currentTarget.dataset.id
    const manual = this.data.manuals.find(m => m.id === manualId)
    
    console.log('favoriteManual called, manualId:', manualId, 'manual:', manual)
    
    if (manual) {
      // 创建产品对象
      const newProduct = {
        id: Date.now(), // 使用时间戳作为唯一ID
        title: manual.title,
        category: this.getCategoryName(manual.category),
        model: manual.title,
        purchaseDate: this.getCurrentDate(),
        warranty: this.getWarrantyDate(),
        status: 'active',
        isFavorite: true,
        lastViewed: this.getCurrentDate(),
        thumbnail: manual.thumbnail,
        description: manual.description,
        tags: manual.tags,
        serialNumber: this.generateSerialNumber(manual.title)
      }
      
      // 获取现有的我的产品列表
      let myProducts = []
      try {
        myProducts = wx.getStorageSync('myProducts') || []
      } catch (error) {
        console.error('获取我的产品失败:', error)
      }
      
      // 检查是否已存在相同产品
      const existingProduct = myProducts.find(p => p.title === manual.title)
      if (existingProduct) {
        wx.showToast({
          title: '产品已存在',
          icon: 'none'
        })
        return
      }
      
      // 添加新产品
      myProducts.push(newProduct)
      
      // 保存到本地存储
      try {
        wx.setStorageSync('myProducts', myProducts)
        console.log('产品已保存到本地存储:', myProducts)
        wx.showToast({
          title: '添加成功',
          icon: 'success',
          duration: 2000
        })
      } catch (error) {
        console.error('保存产品失败:', error)
        wx.showToast({
          title: '添加失败',
          icon: 'error'
        })
      }
    }
  },

  // 获取分类名称
  getCategoryName(categoryId) {
    const categoryMap = {
      'smartphone': '智能手机',
      'laptop': '笔记本电脑',
      'tablet': '平板电脑',
      'audio': '音频设备',
      'smart': '智能设备',
      'accessories': '配件'
    }
    return categoryMap[categoryId] || '其他'
  },

  // 获取当前日期
  getCurrentDate() {
    const now = new Date()
    return `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')}`
  },

  // 获取保修期日期（当前日期+1年）
  getWarrantyDate() {
    const now = new Date()
    const warrantyDate = new Date(now.getFullYear() + 1, now.getMonth(), now.getDate())
    return `${warrantyDate.getFullYear()}-${(warrantyDate.getMonth() + 1).toString().padStart(2, '0')}-${warrantyDate.getDate().toString().padStart(2, '0')}`
  },

  // 生成序列号
  generateSerialNumber(title) {
    const prefix = title.replace(/\s+/g, '').substring(0, 6).toUpperCase()
    const timestamp = Date.now().toString().slice(-6)
    return `${prefix}${timestamp}`
  },

  // 下载手册
  downloadManual(e) {
    // 防止事件冒泡
    if (e && e.stopPropagation) {
      e.stopPropagation()
    }
    
    // 防止事件冒泡到父元素
    if (e && e.preventDefault) {
      e.preventDefault()
    }
    
    const manualId = e.currentTarget.dataset.id
    const manual = this.data.manuals.find(m => m.id === manualId)
    
    if (manual) {
      wx.showModal({
        title: manual.title,
        content: `版本：${manual.version}\n大小：${manual.size}\n页数：${manual.pages}\n下载量：${manual.downloadCount}\n\n${manual.description}`,
        confirmText: '下载',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            this.downloadManualFile(manual)
          }
        }
      })
    }
  },


  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      isLoading: true
    })
    
    // 模拟刷新数据
    setTimeout(() => {
      this.setData({
        isLoading: false
      })
      wx.stopPullDownRefresh()
      wx.showToast({
        title: '刷新成功',
        icon: 'success'
      })
    }, 1000)
  },

  // 上拉加载更多
  onReachBottom() {
    wx.showToast({
      title: '已加载全部内容',
      icon: 'none'
    })
  },

  // 分享
  onShareAppMessage() {
    return {
      title: '荣耀产品说明书库',
      path: '/pages/category/category',
      imageUrl: ''
    }
  }
})